5 款非常好用的开源 Docker 工具
1、watchtower:自动更新 Docker 容器
Watchtower 本身被打包为 Docker 镜像,因此可以像运行任何其他容器一样运行它。要运行 Watchtower,你需要执行以下命令:
$ docker run -d --name watchtower --rm -v /var/run/docker.sock:/var/run/docker.sock v2tec/watchtower --interval 30
在上面的命令中,我们使用一个挂载文件 /var/run/docker.sock 启动了 Watchtower 容器。这么做是有必要的,为的是使 Watchtower 可以与 Docker 守护 API 进行交互。我们将 30 秒传递给间隔选项 interval。此选项定义了 Watchtower 的轮询间隔。Watchtower 支持更多的选项,你可以根据文档中的描述来使用它们。
我们现在启动一个 Watchtower 可以监视的容器。
$ docker run -p 4000:80 --name friendlyhello shekhargulati/friendlyhello:latest
现在,Watchtower 将开始温和地监控这个 friendlyhello 容器。当我将新镜像推送到 Docker Hub 时,Watchtower 在接下来的运行中将检测到一个新的可用的镜像。它将优雅地停止那个容器并使用这个新镜像启动容器。它将传递我们之前传递给这条 run 命令的选项。换句话说,该容器将仍然使用 4000:80 发布端口来启动。
2、docker-gc:容器和镜像的垃圾回收
你可以将 docker-gc 作为脚本和容器来使用。我们将以容器的形式运行 docker-gc。若要使用 docker-gc 来查找所有可以删除的容器和镜像,命令如下:
$ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -e
DRY RUN=1 spotify/docker-gc
[2017-04-28T06:27:24] [INFO] : The following container would have been removed 0c1b3b0972bb792bee508 60c35a4 bc08ba32b527d53eab173d12a15c28deb931/vibrant_ yonath
[2017-04-28T06:27:24] [INFO] : The following container would have been removed 2a72d41e4b25e2782f7844e188643e395650a9ecca660e7a0dc2b7989e5acc28
/friendlyhello_ web
[2017-04-28T06:27:24] [INFO] : The following image would have been removed sha256:00f017a8c2a6e1 fe2f fd05c281 f27d069d2a99323a8cd514dd35f228ba26d2ff
[busybox: latest]
[2017-04-28T06:27:24] [ INFO] : The following image would have been removed sha256 :4a323b466a5ac4ce6524 8dd970b538922c54e535700cafe9448b52a3094483ea
[hello-world:latest]
[2017-04-28T06:27:24] [INFO] : The following image would have been removed sha256:4a323b4 66a5ac4ce65248dd970b538922c54e535700cafe9448b52a3094483ea
[python:2.7-slim]
如果你认同 docker-gc 清理方案, 可以不使用 DRY_RUN 再次运行 docker-gc 执行清空操作。
$ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock spotify/docker-gc
3、docker-slim:面向容器的神奇减肥药
你可以看到,对于一个简单的应用程序,我们必须下载 194 MB 的数据。让我们用 docker-slim 来看看它能减掉多少脂肪。
$ docker-slim build --http-probe friendlyhello
docker-slim 工具对胖镜像进行一系列的检查、测量,最终创建一个瘦版本的镜像。让我们看看这个减过肥的大小吧。
4、rocker:突破 Dockerfile 的限制
Docker 镜像的大小。 缓慢的构建速度。
MOUNT 用于在构建之间共享卷,以便能够被依赖项管理工具重用。 在 Dockerfile 中原本已有 FROM 指令。而 Rocker 使我们可以添加一条以上的 FROM 指令。这意味着你可以通过单个 Rockerfile 创建多个镜像。第一批指令用于构建产品所有的依赖;第二批指令用于构建产品;这能够极大地降低镜像大小。 TAG 用于在构建的不同阶段标识镜像,这意味着你不必手动为每个镜像打标签。 PUSH 用于将镜像推送到镜像仓库。 ATTACH 使你能够交互式地运行中间步骤。这一点对于调试非常有用。
$ brew tap grammarly/tap
$ brew install grammarly/tap/rocker
FROM python:2.7-slim
WORKDIR /app
ADD . /app
RUN pip install -r requirements. txt
EXPOSE 80
ENV NAME World
CMD ["python","app.Py"]
TAG shekhargulati/ friendlyhello:{{ .VERSION }}
PUSH shekhargulati/friendlyhello:{{ .VERSION }}
若要构建一个镜像并将其推送到 Docker Hub,你可以运行以下命令:
$ rocker d build --push -var VERSION-1.0
GitHub 地址:https://github.com/grammarly/rocker
5、ctop:容器的类顶层接口
ctop 是我最近开始使用的一个工具,它能够提供多个容器的实时指标视图。如果你是一个 Mac 用户,可以使用 brew 安装,如下所示:
$ brew install ctop
一旦完成安装,就可以开始使用 ctop 了。现在,你只需要配置 DOCKER_HOST 环境变量。
逛逛GitHub官方交流群开发啦!
-> 进群方式 <-